Network interface devices handle packets of data for transmission between a host computer and a network communications system, such as a local area network. The host computer may be implemented as a client station, a server, or a switched hub. One primary function of the network interface device is to buffer data to compensate for timing discrepancies between the clock domain of the host computer and the clock domain of the network.
Network interface devices typically include a first in, first out (FIFO) buffer memory for storing transmit and receive data, where the transmit data is stored in a transmit FIFO prior to transmission on the network media by a media access controller (MAC), and receive data is stored in a receive FIFO by the MAC prior to transfer to the host computer via the host computer bus interface.
One disadvantage with the use of a FIFO for a transmit buffer or a receive buffer is the increased latency encountered during the buffering process. The latency of the network interface device is the time delay between the time that a data frame is supplied to the network interface device and the time the data is transmitted on the network media, or vice versa.
An additional disadvantage with the use of a FIFO for transmit buffer or receive buffer is the increasing complexity associated with maintaining status information for each data frame stored in the FIFO buffer. If a stored data frame is to have corresponding status information, then an additional FIFO buffer would be required for storing the status information for each stored data frame. Hence, a transmit buffer may require a frame data FIFO for the actual frame data, and a status FIFO for storing the corresponding status information for each data frame. Such an arrangement would result in a substantial increase in the amount of area required on a chip for the status FIFO. In addition, additional synchronization logic would be required to maintain correspondence between the stored frame data and the corresponding status data, increasing the cost and complexity of the network interface device.
In addition, it is desirable to minimize latency in the network interface device by beginning transfer of stored data from a receive FIFO to the host computer as soon as possible. In cases where a received data frame has a length substantially greater than the minimum IEEE 802.3 packet length of 64 bytes, it may be desirable to begin transfer before the entire data frame has been written into the receive FIFO. However, supplying length information from the MAC to both a write controller (responsible for writing the data frame into the receive FIFO) and a read controller (responsible for reading the data frame from the receive FIFO) may increase the interconnect or pin count of the associated devices, increasing the cost and complexity of the network interface device. In addition, the storage of the length field as status information in the status FIFO would not only increase the cost and complexity of the network interface device, but would also increase the latency by requiring the status information to pass through the status FIFO before the read controller could determine the presence of a long frame.